Most web applications require multiple layers of functionality to operate. For example, a common web application may require a database layer, an application server layer and the actual web application layer. Components within each of these layers may have its own resource requirements, dependencies, and so forth. Additionally, these components may operate on a single machine or may operate on different machines. As load on the web application changes, it may be desirable to scale up or scale down the web application. This may include bringing online additional machines that host additional instances of one or more of the layers or taking such machines offline. The management of such scaling can be quite complex, and is conventionally performed manually by a network administrator.